library(readxl)
library(httr)
library(knitr)
library(plyr)
library(gridExtra)
library(tidyverse)
library(janitor)
library(scales)
library(kableExtra)
library(qwraps2)
library(rmarkdown)
library(caret)
library(reshape2)
library(plotly)
library(naniar)
library(gganimate)
Surowe dane zostały pobrane z adresu url (http://www.cs.put.poznan.pl/dbrzezinski/teaching/zed/wuhan_blood_sample_data_Jan_Feb_2020.xlsx) bezpośrednio bez konieczności ręcznego pobierania zbioru danych w celu zapewnienia powtarzalności eksperymentów.
GET(url, write_disk(data_file <- tempfile(fileext = ".xlsx")))
raw_df <- read_excel(data_file)
Zbiór danych składa się z 6120 rekordów medycznych opisywanych przez 81 atrybutów, z których pierwsze 7 odnosi się bezpośrednio do samego pacjenta (jego identyfikator, data przyjęcia do szpitala, wiek, …), a pozostałe 74 atrybuty zawierają informacje o wynikach przeprowadzonych badań.
Zbiór danych zawiera informacje o 375 pacjentach, u których stwierdzono obecność choroby COVID-19. Dane zostały zebrane na przestrzeni od 2020-01-10 do 2020-03-04.
Wśród pacjentów najliczniejszą grupę pod względem płci stanowią mężczyźni - 224 pacjentów (59.7%).
Średnia wieku pacjentów wynosi 58.83, pełne informacje o rozkładzie wieku pacjetnów dostępne są w tabeli poniżej.| Min | Median | Mean | Max |
|---|---|---|---|
| 18 | 62 | 58.83 \(\pm\) 16.46 | 95 |
Dodatkowo do danych o pacjentach dodany został nowy atrybut wyliczeniowy - age_group przypisujący pacjentów do dziesięcioletnich grup wiekowych, powstały na podstawie podziału atrybutu numerycznego - age. Najliczniejszą grupą wiekową wśród pacjentów jest (60,70] - 114 pacjentów (30.4%), natomiast najmniej liczną grupą jest (10,20] - 2 pacjentów (0.5%).
Statystyki dotyczące demografii pacjentów zostały również zwizualizowane na wykresach kołowych poniżej:
Minimalnym czasem hospitalizacji był 0:02:01:57 (dd:hh:mm:ss), a maksymalnym - 35:04:05:54. Średnim czasem jaki pacjenci spędzili w szpitalu był 10:20:29:08.
Pełna dystrybucja czasu hospitalizacji jest przedstawiona w tabeli poniżej:
| age_group | Mean | Max | Min | Standard_deviation |
|---|---|---|---|---|
| (10,20] | 8:16:05:49 | 14:15:13:49 | 2:16:57:48 | 8:10:25:16 |
| (20,30] | 11:13:04:00 | 17:16:22:40 | 0:10:44:51 | 4:22:31:21 |
| (30,40] | 14:02:16:38 | 35:04:05:54 | 0:03:50:46 | 7:02:59:42 |
| (40,50] | 13:13:26:15 | 29:04:45:21 | 0:12:57:09 | 7:12:09:37 |
| (50,60] | 11:07:50:50 | 33:17:10:13 | 0:03:40:29 | 7:16:55:57 |
| (60,70] | 10:10:54:04 | 29:00:38:10 | 0:03:55:53 | 7:13:14:12 |
| (70,80] | 7:18:15:24 | 27:18:53:29 | 0:11:46:57 | 6:14:10:13 |
| (80,90] | 9:00:41:43 | 31:16:54:28 | 0:02:01:57 | 8:04:20:22 |
| (90,100] | 4:10:55:24 | 4:18:31:13 | 3:21:22:44 | 0:09:38:49 |
Pacjenci byli poddawani badaniom ze średnią częstotliwością 2.2619947
ggplot(data=patients, aes(x=age_group, y=tests_freq, fill=age_group)) +
geom_bar(stat="summary", fun="mean") +
theme_bw() +
scale_fill_brewer(palette = "Set1") +
theme(legend.position = "none") +
labs(
title="Dzienna częstotliwość przeprowadzania badań",
x="Grupa wiekowa",
y="Częstotliwość badań"
)
Bezwględna śmiertelność pacjentów ze zbioru danych wyniosła 46.0%.
Tabela z procentowo wyrażoną śmiertelnością w zależności od grupy wiekowej| survived | (10,20] | (20,30] | (30,40] | (40,50] | (50,60] | (60,70] | (70,80] | (80,90] | (90,100] | Combined |
|---|---|---|---|---|---|---|---|---|---|---|
| yes | 50.00% | 100.00% | 97.73% | 81.08% | 65.15% | 44.44% | 12.96% | 14.81% | 0.00% | 54.02% |
| no | 50.00% | 0.00% | 2.27% | 18.92% | 34.85% | 55.56% | 87.04% | 85.19% | 100.00% | 45.98% |
Najbardziej narażeni byli pacjenci z grupy wiekowej (90,100], których śmiertelność wyniosła 100.0%, ale jest to również jedna z najmniej licznych grup pacjentów.
Najmniej narażoną grupą byli pacjenci w wieku (20,30], u których nie zanotowano przypadków śmiertelnych.
Dodatkowo ze względu na małą reprezentację grupy wiekowej (10,20], tylko dwóch pacjentów - przypadek śmiertelny oraz ozdrowiciel, współczynnik śmiertelności (oraz przeżywalności) jest przekłamany.
Pozostałe atrybuty zbioru danych (znajdujące się w kolumnach od 8 do 81) zawierają wyniki badań pacjentów. Podstawowe statystyki dotyczące biomarkerów znajdują się w tabeli poniżej:
Najczęściej mierzonymi czynnikami podczas przeprowadzonych badań były: liczba leukocytów (White blood cell count) oraz liczba erytrocytów (Red blood cell count).
| Czynnik | Liczba badań | % badań |
|---|---|---|
| Interleukin 10 | 267 | 4.36% |
| Interleukin 2 receptor | 268 | 4.38% |
| Interleukin 8 | 268 | 4.38% |
| Tumor necrosis factor<U+03B1> | 268 | 4.38% |
| Interleukin 1ß | 268 | 4.38% |
| Interleukin 6 | 272 | 4.44% |
| Czynnik | Liczba badań | % badań |
|---|---|---|
| Red blood cell count | 1127 | 18.42% |
| White blood cell count | 1127 | 18.42% |
| Serum potassium | 980 | 16.01% |
| calcium | 979 | 16.00% |
| serum sodium | 975 | 15.93% |
| Serum chloride | 975 | 15.93% |
Poniższa macierz zawiera wartości korelacji pomiędzy atrybutami biomedycznymi testowanych wśród pacjentów. Istnieje kilka korelacji pomiędzy atrybutami których wartość wynosi 1. Dzieje się tak ze względu na dwa czynniki: duża liczbę przeprowadzonych badań i mała oraz zmienna liczba sprawdzanych czynników podczas pojedynczego badania. Przykładowo korelacja czynników hemoglobin oraz HCV antibody quantification wynosi 1, ale liczba rekordów w jakich te dwa czynniki były wspólnie mierzone wynosi 2, przez co wartość ich korelacji może być błędnie zawyżona.
W artykule powiązanym z analizowanym zbiorem danych - Yan, L., Zhang, HT., Goncalves, J. et al. An interpretable mortality prediction model for COVID-19 patients - przedstawionych zostało 10 najważniejszych atrybutów zbioru danych na podstawie wyników modelu klasyfikatora Multi-tree XGBoost. Trzema najważniejszymi wyselekcjonowanymi cechami były (w kolejności malejącej ważności atrybutów): Lactate dehydrogenase (dehydrogenaza mleczanowa, LDH), lymphocyte count (liczba limfocytów) i High sensitivity C-reactive protein (wysoko czułe białko C-reaktywne, hs-CRP).
Poniżej przedstawiony został wykres, pochodzący z wymienionego artykułu, przedstawiający 10 najbardziej kluczowych atrybutów zbioru danych przy szacowaniu śmierelności pacjentów.
Autorzy m.in. poniższych publikacji:
potwierdzają obserwacje, iż badanie poziomów: enzymu dehydrogenazy mleczanowej (LDH), wysokoczułego białka C-reaktywnego (hs-CRP) oraz liczby limfocytów pacjenta mogą służyć przy szacowaniu śmierelności/dotkliwości pojedynczych przypadków koronawirusa.
## `summarise()` regrouping output by 'test_performed' (override with `.groups` argument)
## `summarise()` regrouping output by 'test_performed' (override with `.groups` argument)
## `summarise()` regrouping output by 'test_performed' (override with `.groups` argument)